package com.atguigu.jxc.dao;

import com.atguigu.jxc.entity.Goods;
import org.apache.ibatis.annotations.Param;

import java.util.List;

import java.util.Map;

/**
 * @description 商品信息
 */
public interface GoodsDao {


    String getMaxCode();


    /**
     * 分页查询商品库存信息
     * @param codeOrName
     * @param goodsTypeId
     * @return
     */
    List<Goods> selectPageInventory(String codeOrName, Integer goodsTypeId);

    List<Goods> selectPageInventorycode(String codeOrName, Integer goodsTypeId);

    /**
     * 查询商品信息
     * @param goodsTypeId
     * @param goodsName
     * @return
     */
    List<Goods> selectGoodsList(Integer goodsTypeId, String goodsName);

    /**
     * 根据商品编码获取商品信息
     * @param goodsCode
     * @return
     */
    Goods selectGoodsGoodsCode(String goodsCode);

    /**
     * 新添加商品
     * @param goods
     */
    void insetGoods(@Param("goods") Goods goods);




    /**
     * 修改商品信息
     * @param goods
     */
    void UpdateGoods(@Param("goods") Goods goods);

    Goods selectGoodsById(Integer goodsId);

    void deleteGoodsById(Integer goodsId);

    List<Goods> selectGoodsByNameOrCode(@Param("nameOrCode") String nameOrCode);

    List<Goods> selectGoodsByName(@Param("nameOrCode") String nameOrCode);

    List<Goods> selectGoodsByNameOrCodeYoukucun(String nameOrCode);

    List<Goods> selectGoodsByNameYoukucun(String nameOrCode);

    void UpdateGoodsSaveStock(@Param("goodsId") Integer goodsId, @Param("inventoryQuantity")Integer inventoryQuantity, @Param("purchasingPrice")Double purchasingPrice);

    /**
     * 查询所有 当前库存量 小于 库存下限的商品信息
     */
    List<Goods> selectList();


//    Map<String, Goods> listInventoryone();
}
